前一天我們講到了JSON, 現在我們也來講講另外一個常見的形式:csv
CSV(逗號分隔值)是一種常見的數據儲存格式,通常用於表格數據。通常你可以用excel或者numbers這些軟體去讀取它,甚或你可以用簡單的記事本、editor 去打開它
他大概長這個樣子
Name,Score
Jimmy,100
這裡會來表演如何使用Golang自帶的CSV庫來讀取和寫入CSV文件。
首先,我們來看如何讀取CSV吧。在下面的程式碼當中,我們定義了一個student struct,表示了一個學生的信息,包括姓名、中文成績、英文成績和電腦成績。我們使用encoding/csv
包來讀取CSV文件,首先打開文件,然後設置CSV讀取器的分隔符為逗號。我們忽略了CSV文件的第一行(標題行),然後讀取一行數據,並使用strconv.Atoi函數將字符數據轉換為整數。最後,我們將讀取的數據放到student 中並輸出。
package main
import (
"encoding/csv"
"fmt"
"os"
"strconv"
)
func main() {
type student struct {
Name string
Chinese int
English int
Computer int
}
file, _ := os.Open("./example.csv")
defer file.Close()
r := csv.NewReader(file)
r.Comma = ','
r.Read() //ignore first row (column)
record, _ := r.Read()
chinese, _ := strconv.Atoi(record[1])
english, _ := strconv.Atoi(record[2])
computer, _ := strconv.Atoi(record[3])
var s = student{
Name: record[0],
Chinese: chinese,
English: english,
Computer: computer,
}
fmt.Printf("Name %s \nChinese Score: %d \nEnglish Score: %d \nComputer Score: %d \n",
s.Name, s.Chinese, s.English, s.Computer)
}
之後,我們來看如何寫一份CSV文件。在以下程式碼當中,我們先用os.Create
建立一個空的CSV文件(其實就是建立檔案的流程啦,詳請可以看第四天的部分),然後建立一個csv.NewWriter
。我們使用writer.WriteAll
將資料寫入CSV文件......
package main
import (
"encoding/csv"
"fmt"
"os"
)
func main() {
f, _ := os.Create("./example.csv")
writer := csv.NewWriter(f)
err := writer.WriteAll([][]string{
{"Name", "Score"},
{"Jimmy", "100"},
})
if err != nil {
fmt.Println("Write CSV Error !")
} else {
fmt.Println("Write CSV Success !")
}
}